﻿#include "resource.h"

// 指定兼容版本，移除不需要的头文件
#define _WIN32_WINNT 0x0601
#define WIN32_LEAN_AND_MEAN

#include <afxext.h>
#include <afxwin.h>

#undef min
#undef max
#undef near

#include <learn/gl/gl_context.h>

// 文档类，管理数据的类，封装了对数据的管理，并和视图类进行数据交互
class GLDoc : public CDocument
{
    DECLARE_DYNCREATE(GLDoc)
};

// 视图类，负责显示数据
class GLView : public CView
{
    DECLARE_DYNCREATE(GLView)
    DECLARE_MESSAGE_MAP()
  public:
    // 重载纯虚函数
    virtual void OnDraw(CDC *pDC);
    std::shared_ptr<xi::gl::GL_Context> CreateContext(int width, int height);

  public:
    afx_msg void OnPaint();
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnDestroy();
    afx_msg void OnTimer(UINT_PTR nIDEvent);

  private:
    std::shared_ptr<xi::gl::GL_Context> _glContext;
};

// 框架类，作为文档显示的框架
class GLFrame : public CFrameWnd
{
    DECLARE_DYNCREATE(GLFrame)
};